iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
自我挑戰組

深度學習的學習 & ASR 中文語音辨識系列 第 29

【Day 29】Whisper model 的快樂 Fine-tuning 時間 - 4

  • 分享至 

  • xImage
  •  

再來是處理 Evaluation

Evaluation Metrics

如前面提到,我們現在在做的是中文 ASR 所以這裡要用 CER 來做為評估方式

import evaluate

metric = evaluate.load("cer")

def compute_metrics(pred):
    pred_ids = pred.predictions
    label_ids = pred.label_ids

    # replace -100 with the pad_token_id
    label_ids[label_ids == -100] = tokenizer.pad_token_id

    # we do not want to group tokens when computing the metrics
    pred_str = tokenizer.batch_decode(pred_ids, skip_special_tokens=True)
    label_str = tokenizer.batch_decode(label_ids, skip_special_tokens=True)

    cer = 100 * metric.compute(predictions=pred_str, references=label_str)

    return {"cer": cer}

Pre-Trained Checkpoint

Checkpoint 我對他的理解有點像是一個紀錄點的概念,有點像是拿來做一些模型訓練狀況回報

from transformers import WhisperForConditionalGeneration

model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")

後面一樣記得改成自己的模型

model.config.forced_decoder_ids = None
model.config.suppress_tokens = []

這邊其實是在改輸出的語言,我有點忘記前面幾篇有沒有提到這個東西,但那個 forced_decoder_ids 設定過的話,你輸出的語言也會不同

而他其實就是一個數值(代碼),每個語言都有不同的代碼,之前我用 Huggingface 來做轉錄時,他會把中文的音檔用英文來輸出

非常的神奇,一不小心就完成了翻譯了呢!

Training

這邊的參數我懶得貼上來,他原本有幾個變數已經有註解了就不多提
稍微提一下另外幾個變數:

  • max_steps 總共跑的步數
  • fp16 我後來設成 False
  • generation_max_length 每次 output 出來的文字最高的長度
    • 我之前耍白癡把這個設定成 25 然後找不到原因
  • save_steps/eval_steps 我設定成一樣,應該是跑幾步就計算模型訓練狀況

    訓練時會按照這邊的設定,去決定每多少步要 print 結果出來

  • push_to_hub 看要不要上傳到 huggingface 給大家開源使用

我習慣會先測試一下狀況,第一次用會把步數設成 500 之類的,那樣跑起來的速度比較快,能迅速拿到訓練好的模型

如果結果不優再多增加數目

Train - whisper-medium

如果設定成 medium 版的話會發生 CUDA out of memory
https://ithelp.ithome.com.tw/upload/images/20231015/20163287RuK5Pl1H62.jpg

看到這個真的很不爽,要再把前面的重跑一遍

小心得

聽說快完賽了,我也好累,這幾天腳站的好痠


上一篇
【Day 28】Whisper model 的快樂 Fine-tuning 時間 - 3
下一篇
【Day 30】Whisper model 的快樂 Fine-tuning 時間 - Final
系列文
深度學習的學習 & ASR 中文語音辨識30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言